八宅伏位规则,C语言按位左移运算规则( 二 )


目前的第二代身份证号码十八位数字就是一组特征组合码,由十七位数字本体码和一位校验码组成 。排列顺序从左至右依次为:六位数字地址码、八位数字出生日期码、三位数字顺序码和一位数字校验码 。
地址码(前六位数):表示身份证编码对象常住户口所在省(直辖市、自治区)、地(市),以及县(市、旗、区)的行政区划代码,按照GB/T2260的规定执行 。其中:前一、二位数字表示所在省(直辖市、自治区)的代码;第三、四位数字表示所在地(市)的代码;第五、六位数字表示:所在县(市、旗、区)的代码 。
出生日期码(第七位至十四位):表示身份证编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符 。
顺序码(第十五位至十七位):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性 。
校验码(第十八位数):作为尾号的校验码,是由身份证号码编制单位按统一的公式计算出来的 。
C语言按位左移运算规则

八宅伏位规则,C语言按位左移运算规则

文章插图
C语言中按位左移的运算符为<<,其规则如下:
对于操作a<1 按照二进制值每位向高位(书写上是向左)移动n位;
2 最高位(最左边的)n位舍去;
3 最低位(最右边)填加n个0.
简单起见,用char型举例如下:
例一
0x12 << 3 =>
B00010010 << 3 =>
B10010 000(这里最高位的三个0被舍去,其它依次左移,最低位补三个0) =>
0x90
即0x12 << 3 = 0x90
例二
0x9E << 2 =>
B10011110 << 2 =>
B01111000 (最高位10舍去,最低位补两个0)=>
0x78
可以编写如下程序验证:#include
void check(char a, int n)
{
printf("0x%hhx << %d = 0x%hhx\n", a, n, a<}
int main()
{
check(0x12, 3);
check(0x9e, 2);
return 0;
}
其运行结果为0x12 << 3 = 0x90
0x9e << 2 = 0x78
可以看到与我们计算结果是相符的 。
企业经营代码13位 编码规则是什么 50分送出 谢谢
八宅伏位规则,C语言按位左移运算规则

文章插图
编码原则:
前4位码为“企业注册地行政区划代码”,采用《中华人民共和国行政区划代码》(北京市区划代
码:1100);后9位码为国家技术监督局或其授权机构核发的“全国组织机构代码” 。“全国组
织机构代码”后两位之间的连接符“—”不需填入 。