由一道新生作业引发的思考 发表于 2022-10-03 更新于 2022-10-04 分类于 科研 Valine: 本文字数: 1.2k 阅读时长 ≈ 1 分钟 竟然没有能直接输出二进制的参数😂 一.题目这道题如下: 1a||b+c&&b-c的值是(?) 考点: 1.逻辑运算符 123&&:逻辑与:都非0则结果为1||:逻辑或:有一个非0结果为1!:真假互换 比较区分:位运算符 123456&:二进制按位与|:二进制按位或^:二进制按位异或~:二进制按位取反<<:二进制按位左移,最左侧的丢弃,右侧补0>>:二进制按位右移,正数左侧补0,负数左侧补1,右侧丢弃 2.运算的优先级问题 先做+-,后做||和&& 二.正题十进制转二进制有如下方法: 1.itoa函数:将整数转化为字符串 2.除数取余法:递归思想 1234567891011121314151617181920212223#include<stdio.h>#include<stdlib.h>#define uint32 unsigned intvoid FuncOutput(uint32 value,int Radix){ char buffer[33] ; itoa(value,buffer,2); printf("%s\r\n",buffer);}void DivdOutput(uint32 value){ if (value >> 1) { DivdOutput(value >> 1); } putc((value & 1) ? '1' : '0', stdout);}int main(){ int a = 114514 ; FuncOutput(a,2) ; DivdOutput(a) ; return 0;}//11011111101010010//11011111101010010 三.一些奇怪的关联付少峰老师曾经在数电课提过这样一个问题: 计算机做自加快还是做自减快? 先上答案:自减 编程测试12345678910111213141516#include<stdio.h>#include<string.h>#include<time.h>int main(){ clock_t start_time = clock(); int count = 1000000000 ; int i ; for(i=0;i<count;i++){} printf("自加用时:%ums\r\n",(clock()-start_time)); clock_t cl = clock(); for(i=count;i>0;i--){} printf("自减用时:%ums\r\n",(clock()-cl)); return 0 ;}//1141ms//453ms -------------本文结束感谢您的阅读------------- 请作者喝一杯蜜雪冰城吧! 打赏 微信支付 本文作者: Nexus 本文链接: http://nexuslbh.top/2022/10/03/由一道新生作业引发的思考/ 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!