计算机进制

#计算机进制
一,简答题.

  1. 什么是进制,常见的进制有哪些(举出5个例子)。
    1、进制是进位的机制,使用进制可以用有限的位数表示无限多的数据。
    2、常见的进制有:
    2进制:常用于计算机内部数据的存储与传输。用0和1来表示
    8进制:用0、1、2、3、4、5、6、7来表示。
    12进制:钟表计数。用0(12)、1、2、3、4、5、6、7、8、9、10-11个数来表示。
    16进制:用0-9,A、B、C、D、E、F来表示。
    29/30/31进制:表示月份,
  2. 什么是基数,什么是位,什么是权,什么是位权。
    基数:可以使用数字符号的数目称为基数或者底数。
    位:指数中固定数字的位数。计算方式为从右至左,依次为0、1、2、…。
    权:是指数制中每个位所代表的的值的大小。
    位权:是数制中固定位置对应的单位值,比如10进制中第二位的位权为10,第三位为100.二进制中第二位为2,第三位为4.
  3. 什么是机器数,什么是真值?什么是原码,反码,补码?计算机以什么形式存储数据。
    机器数:是数在计算机中的二进制表示,机器数的最高位是符号位,正数符号位为0,负数符号位为1;机器数包含原码、反码、补码。
    真值:一个数的10进制表示。
    原码:计算机中的二进制数,最高位是符号位,0为正,1为负。
    反码:对原码进行按位取反,最高位符号位不变所得到的的二进制数。
    补码:整数的原返补码相同,负数的补码为反码+1,在计算机中用补码进行运算。
    存储形式:计算机以二进制数存储数据。
  4. &,|, ~,^, <<, >>都各自什么作用?
    &:按位与运算符,只有当相同位置的值都为1时结果才为1,作用是清零,把不想要的部分清零
    |:按位或运算符,只有当两个二进制位数都为0时,结果才为0,作用是把某些位置置1.
    ~:按位取反运算符,除最高位符号位除外,其他位将1变为0,0变为1
    ^:按位异或运算符,如果两个二进制位上值相同,则结果为0,不相同则为1
    <<:左移运算符,对二进制数进行左移操作,左移后的位置补零。
    >>:右移运算符,对二进制数进行右移操作,右移后的位置补零。

二,进制转换

  1. 将十进制数9527分别转换为二进制,八进制,十六进制以及六进制。
    二进制:10 0101 0011 0111
    八进制:22467
    十六进制:2537
    六进制:23750
  2. 将十进制数3306分别转换为二进制,八进制,十六进制以及九进制。
    二进制:1100 1110 1010
    八进制:6352
    十六进制:CEA
    九进制:4473
  3. 把二进制数10 1101 1011分别转换为八进制,十进制以及十六进制数。
    八进制:2DB
    十进制:731
    十六进制:1333
  4. 把八进制数2735分别转换为二进制,十进制,十六进制数。
    二进制:101 1101 1101
    十进制:1501
    十六进制数:5DD
  5. 把十六进制数4F7分别转换为二进制,十进制,八进制数。
    二进制:100 1111 0111
    十进制:1271
    八进制数:2367
  6. 把七进制数612分别转换为二进制,八进制,十进制,十六进制数。
    二进制:1 0010 1110
    八进制:456
    十进制:302
    十六进制:12E
    三, 位运算
  7. 分别计算 45&71, 45|71, ~45, 45^71, 45<<2, 45>>3的值是多少?
    45 & 71 = 5
    45 | 71 = 111
    ~45 = -(45+1)= -46
    45 ^ 71 = 106
    45 << 2 = 180
    45 >> 3 = 5
  8. 分别计算 -38&27, -38|27, ~-38, -38^27, -38<<3, -38>>2的值是多少?
    -38 & 27 = 26
    -38 | 27 = -37
    ~-38 = 37
    -38 ^ 27 = -63
    -38 << 3 = -304
    -38 >> 2 = -10
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个实现十进制与其他进制之间转换的C语言代码示例,其中包括二进制、八进制和十六进制的转换。 ```c #include<stdio.h> #include<stdlib.h> // 定义数字位数上限 #define MAX_NUM_DIGITS 100 // 将十进制数字转换为其他进制 void decimalToOther(int num, int base) { int digits[MAX_NUM_DIGITS], i = 0; // 将数字每一位存储到数组中 while (num != 0) { digits[i++] = num % base; num = num / base; } // 倒序输出数组中的数字(即为转换后的数字) for (int j = i - 1; j >= 0; j--) { // 将10-15转换为A-F输出 if (digits[j] >= 10) { printf("%c", digits[j] - 10 + 'A'); } else { printf("%d", digits[j]); } } printf("\n"); } // 将其他进制数字转换为十进制 int otherToDecimal(char* numStr, int base) { int num = 0; for (int i = 0; numStr[i] != '\0'; i++) { int digit = numStr[i]; // 将A-F转换为10-15 if (digit >= 'A' && digit <= 'F') { digit = digit - 'A' + 10; } else { digit = digit - '0'; } num = num * base + digit; } return num; } int main() { int num, base; char numStr[MAX_NUM_DIGITS]; printf("请输入一个十进制数:"); scanf("%d", &num); printf("请输入要转换的进制(2/8/16):"); scanf("%d", &base); printf("转换后的结果为:"); decimalToOther(num, base); printf("请输入一个二进制数:"); scanf("%s", numStr); printf("转换后的结果为:%d\n", otherToDecimal(numStr, 2)); printf("请输入一个八进制数:"); scanf("%s", numStr); printf("转换后的结果为:%d\n", otherToDecimal(numStr, 8)); printf("请输入一个十六进制数:"); scanf("%s", numStr); printf("转换后的结果为:%d\n", otherToDecimal(numStr, 16)); return 0; } ``` 希望这个代码示例能够帮到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值